<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var nums = [11, 9, 2, 8, 12, 5, 3, 19, 40, 6, 17, 38];

        // 删除数组中的 11
        // pop()  shift()  
        // splice(开始的索引,多少个 )
        for (var i = 0; i < nums.length; i++) {
            if (nums[i] == 11) {
                nums.splice(i, 1)
            }
        }
        // console.log(nums);



        var nums = [11, 9, 2, 8, 12, 5, 3, 19, 11, 40, 6, 17, 38];

        // 删除数组中的 11
        for (var k in nums) {
            if (nums[k] == 11) {
                nums.splice(k, 1)
            }
        }
        // console.log(nums);


        // 上面的数组 只有 1个11 或者 11 没有连在一起   所以这种删除方式没有问题
        var nums = [11, 9, 2, 8, 12, 5, 5, 3, 3, 19, 40, 6, 17, 38];

        // // 删除数组中的 5和3  
        // for(var k in nums){
        //     if(nums[k] == 5 || nums[k] == 3){
        //         nums.splice(k,1)
        //     }
        // }
        // //  上面的 5 连在一起  3 连在 一起  
        // // 只能删除一个  也就是 说 有一个漏网之鱼  
        // console.log(nums);
        // 上面这种5 3 逃避的现象 就叫数组塌陷 

        // 如何解决 

        // 1 从右往左 删除   
        // 好处  因为 删除元素 从右往左 补位  从右往左删 始终能找到这个元素   

        // for(var i=1;i<=10;i++){
        //     // i  1-10 

        // }

        // for(var i=10;i>=1;i--){
        //     // i  10-1

        // }
        // for (var i = nums.length - 1; i >= 0; i--) {
        //     if (nums[i] == 5 || nums[i] == 3) {
        //         nums.splice(i, 1)
        //     }
        // }
        // console.log(nums)


        // for (var i = nums.length - 1; i >= 0; i--) {
        //     if (nums[i] == 5 || nums[i] == 3) {
        //         nums.splice(i, 1)
        //     }
        // }
        // console.log(nums)


          for (var i = 0; i < nums.length; i++) {
            if (nums[i] == 5 || nums[i] == 3) {
                nums.splice(i, 1);// 删除了i对应的元素之后
                i--; // 下一轮重新从这个下边删除 如何实现重新再来一遍 
                // i-- 重新再来一次  
            }
        }
        console.log(nums)


        // 解决数组塌陷 两种方式  
        // 1. 从右往左删除 
        // 2. 删除了一个元素之后  下标减一 表示重新再来一次   




    </script>
</body>

</html>